package to;

import java.io.Serializable;
import java.text.SimpleDateFormat;
import java.util.Date;

import javax.persistence.CascadeType;
import javax.persistence.Column;
import javax.persistence.Entity;
import javax.persistence.GeneratedValue;
import javax.persistence.Id;
import javax.persistence.JoinColumn;
import javax.persistence.OneToOne;
import javax.persistence.Table;
import javax.persistence.Temporal;
import javax.persistence.TemporalType;

@Entity
@Table(name = "tbl_pessoa")
public class Pessoa implements Serializable {
	private static final long serialVersionUID = 5680855171728766528L;

	@Id
	@GeneratedValue
	private Integer codigo;

	@Column(length = 45, nullable = false)
	private String nome;

	@Column
	private Boolean tipoPessoa;

	@Column(nullable = false, length = 19)
	private String cpf_cnpj;

	@Temporal(TemporalType.DATE)
	private Date dataNascimento;

	@OneToOne(cascade = CascadeType.ALL)
	@JoinColumn(name = "codigo_usuario")
	private Usuario usuario;

	@OneToOne(cascade = CascadeType.ALL)
	@JoinColumn
	private Endereco endereco;

	public Integer getCodigo() {
		return codigo;
	}

	public void setCodigo(Integer codigo) {
		this.codigo = codigo;
	}

	public String getNome() {
		return nome;
	}

	public void setNome(String nome) {
		this.nome = nome;
	}

	public Boolean getTipoPessoa() {
		return tipoPessoa;
	}

	public void setTipoPessoa(Boolean tipoPessoa) {
		this.tipoPessoa = tipoPessoa;
	}

	public String getCpf_cnpj() {
		return cpf_cnpj;
	}

	public void setCpf_cnpj(String cpf_cnpj) {
		this.cpf_cnpj = cpf_cnpj;
	}

	public Date getDataNascimento() {
		return dataNascimento;
	}

	public void setDataNascimento(Date dataNascimento) {
		this.dataNascimento = dataNascimento;
	}

	public Usuario getUsuario() {
		return usuario;
	}

	public void setUsuario(Usuario usuario) {
		this.usuario = usuario;
	}

	public Endereco getEndereco() {
		return endereco;
	}

	public void setEndereco(Endereco endereco) {
		this.endereco = endereco;
	}

	public String getDataNascimentoFormatada() {
		SimpleDateFormat sdf = new SimpleDateFormat("dd/MM/yyyy");
		return sdf.format(dataNascimento);
	}

	public String codigoFormatado() {
		return String.format("%06d", codigo);
	}
}
